第二天~天氣晴,肝很硬~壓哨發文
在還沒有微服務的應用前,當面臨效能不足要新增node時,需要先開個VM ~> 安裝middleware ~> 部屬程式 ~> 請network admin開通ACL.
但是在微服務爆炸的時代,透過容器化的技術,node總是說加就加,說減就減,在這種情況下該如何有效的發現微服務的增減,以及如何管理微服務之間的連接溝通變成了一個議題。
Hashicorp Consul提供了一些功能來解決遇到的困難。
下圖是跨了兩個不同DC的架構圖,Consul可以分為Server與Client,在閱讀官方文件時,有時會統稱為Consul agent。
Consul Server是整個網格的控制中心,通常會建置3或5台來確保高可用性,使用Consensus Protocol來確保一致性,Consul Server之間會選出一個Leader,follower會跟leader做replication;Consul Client會部屬在node上,client與server之間溝通用使用Gossip Protocol來作為可靠且快速的事件廣播;想更進一步瞭解這兩個protocol可以參考官方文件說明。
Consensus Protocol: https://www.consul.io/docs/internals/gossip
Gossip Protocol: https://www.consul.io/docs/internals/consensus
Type | CPU | Memory | Disk | Typical Cloud Instance Types |
---|---|---|---|---|
Small | 2-4 core | 8-16 GB RAM | 50GB | AWS: m5.large, m5.xlarge |
Azure: Standard_D2_v3, Standard_D4_v3 | ||||
GCP: n2-standard-2, n2-standard-4 | ||||
Large | 8-16 core | 32-64 GB RAM | 100GB | AWS: m5.2xlarge, m5.4xlarge |
Azure: Standard_D8_v3, Standard_D16_v3 | ||||
GCP: n2-standard-8, n2-standard-16 |
.Small建議用於開發或測試環境。
.Large用於高負載的正式環境。
.效能的調校官方除了有"performance"可以設定外,也有獨立一篇文章說明。
Use | Default Ports |
---|---|
DNS: The DNS server (TCP and UDP) | 8600 |
HTTP: The HTTP API (TCP Only) | 8500 |
HTTPS: The HTTPs API | disabled (8501)* |
gRPC: The gRPC API | disabled (8502)* |
LAN Serf: The Serf LAN port (TCP and UDP) | 8301 |
Wan Serf: The Serf WAN port (TCP and UDP) | 8302 |
server: Server RPC address (TCP Only) | 8300 |
Sidecar Proxy Min: Inclusive min port number to use for automatically assigned sidecar service registrations. | 21000 |
Sidecar Proxy Max: Inclusive max port number to use for automatically assigned sidecar service registrations. | 21255 |
圖片來源: https://www.consul.io/docs/internals/architecture